const arr = [1,[2,3,[4,5,6]]]
// console.log(arr.flat(Infinity))
function flatten(arr){
    let res = []
    for(let i = 0; i < arr.length; i++){
        if(Array.isArray(arr[i])){
            res = res.concat(flatten(arr[i]))
        }else{
            res.push(arr[i])
        }
    }
    return res
}
function flatten4(arr){
    return arr.reduce((pre,cur)=>{
        return pre.concat(Array.isArray(cur) ? flatten4(cur) : cur)
    },[])
}

console.log(flatten(arr))
// 2. 不使用递归
function flatten2(arr){
    while(arr.some(item => Array.isArray(item))){
        arr = [].concat(...arr)
    }
    return arr
}
console.log(flatten2(arr))
function flatten3(arr){
    arr.toString().split(',').map(item=>Number(item))
    return arr
}
console.log(flatten3(arr))


